<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>系统首页</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/>
    <meta http-equiv="Access-Control-Allow-Origin" content="*">
    <link rel="stylesheet" href="/lib/layui-v2.5.5/css/layui.css" media="all"/>
    <link rel="stylesheet" href="/lib/font-awesome-4.7.0/css/font-awesome.min.css" media="all"/>
    <link rel="stylesheet" href="/css/public.css" media="all"/>
    <style>
        body * {
            border-style: none !important;
        }

        .layui-card .layui-card-header, .layui-card .layui-card-body {
            background-color: #262F52 !important;
            color: #D3D3D3;
            box-shadow: none;
        }

        .icon {
            margin-right: 10px;
            color: #1aa094;
        }

        .panel-content {
            color: rgb(250, 216, 96);
            font-family: bdzongyi;
            font-size: 16px;
            padding-bottom: 20px;
        }

        .icon-blue {
            color: #1e9fff !important;
        }

        .icon-tip {
            color: #ff5722 !important;
        }

        .layuimini-qiuck-module {
            text-align: center;
            margin-top: 10px;
            transition: all 0.3s;
        }

        .layuimini-qiuck-module:hover {
            transform: scale(1.2);
        }

        .layuimini-qiuck-module a i {
            display: inline-block;
            width: 100%;
            height: 60px;
            line-height: 60px;
            text-align: center;
            border-radius: 2px;
            font-size: 30px;
            color: #D3D3D3;
            transition: all .3s;
            -webkit-transition: all .3s;
        }

        .layuimini-qiuck-module a cite {
            position: relative;
            top: 2px;
            display: block;
            color: #D3D3D3;
            text-overflow: ellipsis;
            overflow: hidden;
            white-space: nowrap;
            font-size: 14px;
        }

        .welcome-module {
            width: 100%;
            height: 210px;
        }

        .panel {
            border-radius: 3px;
            -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
            box-shadow: 0 1px 1px rgba(0, 0, 0, .05)
        }

        .panel-body {
            padding: 10px
        }

        .panel-title {
            margin-top: 0;
            margin-bottom: 0;
            font-size: 14px;
            color: inherit
        }

        .label {
            display: inline;
            padding: .2em .6em .3em;
            font-size: 75%;
            font-weight: 700;
            line-height: 1;
            color: #fff;
            text-align: center;
            white-space: nowrap;
            vertical-align: baseline;
            border-radius: .25em;
            margin-top: .3em;
        }

        .layui-red {
            color: red
        }

        .main_btn > p {
            height: 40px;
        }

        .layuimini-notice:hover {
            background: #f6f6f6;
        }

        .layuimini-notice {
            padding: 7px 16px;
            clear: both;
            font-size: 12px !important;
            cursor: pointer;
            position: relative;
            transition: background 0.2s ease-in-out;
        }

        .layuimini-notice-title, .layuimini-notice-label {
            padding-right: 70px !important;
            text-overflow: ellipsis !important;
            overflow: hidden !important;
            white-space: nowrap !important;
        }

        .layuimini-notice-title {
            line-height: 28px;
            font-size: 14px;
        }

        .layuimini-notice-extra {
            position: absolute;
            top: 50%;
            margin-top: -8px;
            right: 16px;
            display: inline-block;
            height: 16px;
            color: #999;
        }

    </style>
</head>
<body>
<div class="layuimini-container" style="background-color: #323C5B">
    <div class="layuimini-main">
        <div class="layui-row layui-col-space15">
            <div class="layui-col-md8">
                <div class="layui-row layui-col-space15">
                    <div class="layui-col-md6">
                        <div class="layui-card">
                            <div class="layui-card-header"><i class="fa fa-credit-card icon icon-blue"></i>快捷入口</div>
                            <div class="layui-card-body">
                                <div class="welcome-module">
                                    <div class="layui-row layui-col-space10 layuimini-qiuck">
                                        <div class="layui-col-xs3 layuimini-qiuck-module">
                                            <a href="javascript:;" layuimini-content-href="/html/sys/menu"
                                               data-title="菜单管理" data-icon="fa fa-window-maximize">
                                                <i class="fa fa-window-maximize"></i>
                                                <cite>菜单管理</cite>
                                            </a>
                                        </div>
                                        <div class="layui-col-xs3 layuimini-qiuck-module">
                                            <a href="javascript:;" layuimini-content-href="/html/bds/code"
                                               data-title="码表管理" data-icon="fa fa-gears">
                                                <i class="fa fa-gears"></i>
                                                <cite>码表管理</cite>
                                            </a>
                                        </div>
                                        <div class="layui-col-xs3 layuimini-qiuck-module">
                                            <a href="javascript:;" layuimini-content-href="/html/emr/sqddz"
                                               data-title="申请单管理" data-icon="fa fa-snowflake-o">
                                                <i class="fa fa-snowflake-o"></i>
                                                <cite>申请单管理</cite>
                                            </a>
                                        </div>
                                        <div class="layui-col-xs3 layuimini-qiuck-module">
                                            <a href="javascript:;" layuimini-content-href="/html/emr/blcx"
                                               data-title="病历查询" data-icon="fa fa-calendar">
                                                <i class="fa fa-calendar"></i>
                                                <cite>病历查询</cite>
                                            </a>
                                        </div>
                                        <div class="layui-col-xs3 layuimini-qiuck-module">
                                            <a href="javascript:;" layuimini-content-href="/html/bds/organization"
                                               data-title="组织机构管理" data-icon="fa fa-file-text">
                                                <i class="fa fa-file-text"></i>
                                                <cite>组织机构管理</cite>
                                            </a>
                                        </div>
                                        <div class="layui-col-xs3 layuimini-qiuck-module">
                                            <a href="javascript:;" layuimini-content-href="/html/page/icon"
                                               data-title="图标列表" data-icon="fa fa-dot-circle-o">
                                                <i class="fa fa-dot-circle-o"></i>
                                                <cite>图标列表</cite>
                                            </a>
                                        </div>

                                        <div class="layui-col-xs3 layuimini-qiuck-module">
                                            <a href="javascript:;" layuimini-content-href="/html/page/error"
                                               data-title="404页面" data-icon="fa fa-hourglass-end">
                                                <i class="fa fa-hourglass-end"></i>
                                                <cite>404页面</cite>
                                            </a>
                                        </div>

                                        <div class="layui-col-xs3 layuimini-qiuck-module">
                                            <a href="javascript:;" layuimini-content-href="https://www.baidu.com"
                                               data-title="百度搜索" data-icon="fa fa-search">
                                                <i class="fa fa-search"></i>
                                                <cite>百度搜索</cite>
                                            </a>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>

                    </div>
                    <div class="layui-col-md6">
                        <div class="layui-card">
                            <div class="layui-card-header"><i class="fa fa-warning icon"></i>数据统计</div>
                            <div class="layui-card-body">
                                <div class="welcome-module">
                                    <div class="layui-row layui-col-space10">
                                        <div class="layui-col-xs6">
                                            <div class="panel layui-bg-number">
                                                <div class="panel-body">
                                                    <div class="panel-content">
                                                        <h1 class="no-margins">150,777</h1>
                                                    </div>
                                                    <div class="panel-title">
                                                        就诊人次
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                        <div class="layui-col-xs6">
                                            <div class="panel layui-bg-number">
                                                <div class="panel-body">
                                                    <div class="panel-content">
                                                        <h1 class="no-margins">10,933.91</h1>
                                                    </div>
                                                    <div class="panel-title">
                                                        住院收入
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                        <div class="layui-col-xs6">
                                            <div class="panel layui-bg-number">
                                                <div class="panel-body">
                                                    <div class="panel-content">
                                                        <h1 class="no-margins">3,234.18</h1>
                                                    </div>
                                                    <div class="panel-title">
                                                        门诊收入
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                        <div class="layui-col-xs6">
                                            <div class="panel layui-bg-number">
                                                <div class="panel-body">
                                                    <div class="panel-content">
                                                        <h1 class="no-margins">1234</h1>
                                                    </div>
                                                    <div class="panel-title">
                                                        浏览统计
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                    <div class="layui-col-md12">
                        <div class="layui-card">
                            <div class="layui-card-header"><i class="fa fa-line-chart icon"></i>报表统计2</div>
                            <div class="layui-card-body" style="padding: 0px !important;">
                                <div id="visitmap" style="width: 100%;height:660px;"></div>
                            </div>
                        </div>
                    </div>
                    <div class="layui-col-md12">
                        <div class="layui-card">
                            <div class="layui-card-header"><i class="fa fa-line-chart icon"></i>报表统计</div>
                            <div class="layui-card-body" tyle="padding: 0px !important;">
                                <div id="echarts-records" style="width: 100%;min-height:460px"></div>
                            </div>
                        </div>
                    </div>

                </div>
            </div>

            <div class="layui-col-md4">

                <div class="layui-card">
                    <div class="layui-card-header"><i class="fa fa-bullhorn icon icon-tip"></i>系统公告</div>
                    <div class="layui-card-body layui-text">
                        <div class="layuimini-notice">
                            <div class="layuimini-notice-title">新增码表管理</div>
                            <div class="layuimini-notice-extra">2020-08-01 20:06</div>
                            <div class="layuimini-notice-content layui-hide">
                                实现医院统一字典管理。<br>
                                实现字典的增删查改功能。<br>
                            </div>
                        </div>
                        <div class="layuimini-notice">
                            <div class="layuimini-notice-title">新增组织机构管理</div>
                            <div class="layuimini-notice-extra">2020-07-27 12:57</div>
                            <div class="layuimini-notice-content layui-hide">
                                实现医院组织机构统一管理。<br>
                                组织机构层级关系显示。<br>
                                可以对组织机构进行增删查改。<br>
                            </div>
                        </div>
                        <div class="layuimini-notice">
                            <div class="layuimini-notice-title">完善医嘱申请单维护功能</div>
                            <div class="layuimini-notice-extra">2020-07-23 14:28</div>
                            <div class="layuimini-notice-content layui-hide">
                                完善了申请单的增删查改。<br/>
                            </div>
                        </div>
                        <div class="layuimini-notice">
                            <div class="layuimini-notice-title">新增医嘱申请单维护</div>
                            <div class="layuimini-notice-extra">2020-07-21 11:02</div>
                            <div class="layuimini-notice-content layui-hide">
                                医院科室能开展的检验项目字典维护。<br/>
                                检验树的维护。<br/>
                                方便医生的医嘱开立。<br/>
                            </div>
                        </div>
                        <div class="layuimini-notice">
                            <div class="layuimini-notice-title">修改菜单管理</div>
                            <div class="layuimini-notice-extra">2020-07-20 11:55</div>
                            <div class="layuimini-notice-content layui-hide">
                                使用treeTable重构菜单管理界面<br/>
                                更直观展示菜单层级关系。<br/>
                            </div>
                        </div>
                        <div class="layuimini-notice">
                            <div class="layuimini-notice-title">导入数据、开发缓存清理</div>
                            <div class="layuimini-notice-extra">2020-07-13 14:53</div>
                            <div class="layuimini-notice-content layui-hide">
                                将数据同步至云端。<br/>
                                使用了redis作为缓存数据库，并新增了缓存清理功能。<br/>
                            </div>
                        </div>
                    </div>
                </div>

                <div class="layui-card">
                    <div class="layui-card-header"><i class="fa fa-fire icon"></i>版本信息</div>
                    <div class="layui-card-body layui-text">
                        <table class="layui-table">
                            <colgroup>
                                <col width="100"/>
                                <col/>
                            </colgroup>
                            <tbody>
                            <tr>
                                <td>Gitee地址</td>
                                <td>
                                    <a href="https://gitee.com/huang_wenning/jbase" target="_blank">gitee</a><br/>
                                </td>
                            </tr>
                            </tbody>
                        </table>
                    </div>
                </div>

                <div class="layui-card">
                    <div class="layui-card-header"><i class="fa fa-paper-plane-o icon"></i>作者心语</div>
                    <div class="layui-card-body layui-text layadmin-text">

                    </div>
                </div>

            </div>
        </div>
    </div>
</div>
<script src="/lib/layui-v2.5.5/layui.js" charset="utf-8"></script>
<script src="/js/lay-config.js?v=1.0.4" charset="utf-8"></script>
<script src="https://cdn.jsdelivr.net/npm/axios@0.21.1/dist/axios.min.js"></script>
<script src="/js/base.js?version=20200112" charset="utf-8"></script>


<!--<script src="https://cdn.jsdelivr.net/npm/echarts@5.0.0/dist/echarts.min.js"></script>-->

<script>
    layui.use(['layer', 'miniTab', 'echarts'], function () {
        var $ = layui.jquery,
            layer = layui.layer,
            miniTab = layui.miniTab
            , echarts = layui.echarts
        ;
        miniTab.listen();

        /**
         * 查看公告信息
         **/
        $('body').on('click', '.layuimini-notice', function () {
            var title = $(this).children('.layuimini-notice-title').text(),
                noticeTime = $(this).children('.layuimini-notice-extra').text(),
                content = $(this).children('.layuimini-notice-content').html();
            var html = '<div style="padding:15px 20px; text-align:justify; line-height: 22px;border-bottom:1px solid #e2e2e2;background-color: #2f4056;color: #ffffff">\n' +
                '<div style="text-align: center;margin-bottom: 20px;font-weight: bold;border-bottom:1px solid #718fb5;padding-bottom: 5px"><h4 class="text-danger">' + title + '</h4></div>\n' +
                '<div style="font-size: 12px">' + content + '</div>\n' +
                '</div>\n';
            parent.layer.open({
                type: 1,
                title: '系统公告' + '<span style="float: right;right: 1px;font-size: 12px;color: #b1b3b9;margin-top: 1px">' + noticeTime + '</span>',
                area: '300px;',
                shade: 0.8,
                id: 'layuimini-notice',
                btn: ['查看', '取消'],
                btnAlign: 'c',
                moveType: 1,
                content: html,
                success: function (layero) {
                    var btn = layero.find('.layui-layer-btn');
                    btn.find('.layui-layer-btn0').attr({
                        href: 'https://gitee.com/zhongshaofa/layuimini',
                        target: '_blank'
                    });
                }
            });
        });

        /**
         * 报表功能
         */
        var echartsRecords = echarts.init(document.getElementById('echarts-records'), 'dark');
        var optionRecords = {
            tooltip: {
                trigger: 'axis'
            },
            legend: {
                data: ['访问量']
            },
            grid: {
                left: '3%',
                right: '4%',
                bottom: '3%',
                containLabel: true
            },
            toolbox: {
                feature: {
                    saveAsImage: {}
                }
            },
            xAxis: {
                type: 'category',
                boundaryGap: false,
                data: []
            },
            yAxis: {
                type: 'value'
            },
            series: [
                {
                    name: '访问量',
                    type: 'line',
                    data: []
                }
            ]
        };
        echartsRecords.setOption(optionRecords);

        echartsRecords.showLoading();
        base.request({
            url: '/pms/query',
            params: {
                code: 'com.base.api.uum.UumSqlQuery'
            }
        }, layer).success(function (resp) {
            echartsRecords.hideLoading();
            // 填入数据
            echartsRecords.setOption({
                xAxis: {
                    type: 'category',
                    boundaryGap: false,
                    data: resp.data[0].keyArray
                },
                series: [{
                    name: '访问量',
                    type: 'line',
                    data: resp.data[0].valueArray
                }]
            });
        });

        // echarts 窗口缩放自适应
        window.onresize = function () {
            echartsRecords.resize();
            myChart.resize();
        }

        var myChart = echarts.init(document.getElementById("visitmap"));
        var areaMap = new Map();
        var currentTitle = '全国';

        let areaCode = 100000;
        let clickObj = {
            clickFlag: 1,
            parent: {}
        }

        $(function () {

            loadMap(areaCode | '100000');

            $('#visitmap').on('click', function () {
                if (clickObj.clickFlag) {
                    if (clickObj.parent.code) {
                        areaCode = clickObj.parent.code;
                        currentTitle = clickObj.parent.name;
                        loadMap(areaCode);
                    }
                } else {
                    clickObj.clickFlag = 1;
                }
            })

            myChart.on('click', function (params) {
                clickObj.clickFlag = 0;

                if (params.componentType === 'geo' && params.name === '云南省') {
                    areaCode = 530000
                    currentTitle = '云南省';
                    loadMap(areaCode);
                } else if (params.componentType === 'geo' && params.name === '大理白族自治州') {
                    areaCode = 532900
                    currentTitle = '大理白族自治州';
                    loadMap(areaCode);
                }
            });
        });

        // 100000_full--全国   530000_full -- 云南
        function loadMap(areaCode) {
            if (areaMap.get(areaCode)) {
                myChart.showLoading();
                base.request({
                    url: '/pms/query',
                    params: {
                        code: 'com.base.api.bds.ChinaMapSqlQuery',
                        params: JSON.stringify({
                            level: areaCode == '100000' ? '1' : areaCode == '530000' ? '2' : '3',
                            areaCode: areaCode
                        })
                    }
                }, layer).success(function (resp) {
                    myChart.hideLoading();
                    const obj = areaMap.get(areaCode);
                    clickObj.parent = obj.parent;
                    resp.data.sort((a, b) => b.rc - a.rc);
                    setOption(resp.data)
                });
            } else {
                $.getJSON('/json/' + areaCode + '_full.json', function (mapJson) {
                    areaMap.set(areaCode, mapJson);
                    echarts.registerMap(areaCode, mapJson);
                    myChart = echarts.init(document.getElementById("visitmap"));
                    myChart.showLoading();
                    base.request({
                        url: '/pms/query',
                        params: {
                            code: 'com.base.api.bds.ChinaMapSqlQuery',
                            params: JSON.stringify({
                                level: areaCode == '100000' ? '1' : areaCode == '530000' ? '2' : '3',
                                areaCode: areaCode
                            })
                        }
                    }, layer).success(function (resp) {
                        myChart.hideLoading();
                        const obj = areaMap.get(areaCode);
                        clickObj.parent = obj.parent;
                        resp.data.sort((a, b) => b.rc - a.rc);
                        setOption(resp.data)
                    });
                })
            }

            // const obj = JSON.parse(areaMap.get(areaCode));

        }

        var baseMap = {
            name: '大理白族自治州',
            coordinate: [100.225668, 25.589449]
        };

        function getCoords(code) {
            var arr = areaMap.get(areaCode);
            var obj = arr.features.find(item =>
                item.properties.adcode == code
            );
            if (!obj) {
                console.info('找不到此城市坐标，请检查！' + code);
            }
            return obj;
        }

        var convertData = function (data) {
            var res = [];
            for (var i = 0; i < data.length; i++) {
                if (data[i].coordinate) {
                    res.push({
                        fromName: data[i].name,
                        toName: baseMap.name,
                        numValue: data[i].rc,
                        tooltip: {
                            show: false
                        },
                        coords: [getCoords(data[i].code).properties.center, baseMap.coordinate]
                    });
                }
            }
            return res;
        };
        var color1 = ['#ff3333', 'orange', 'yellow', 'lime', 'aqua'];

        function setOption(data) {
            var series = [];
            series.push(
                {
                    name: '患者来源',
                    type: 'lines',
                    zlevel: 1,
                    effect: {
                        show: true,
                        period: 6,
                        trailLength: 0.7,
                        color: function (params) {
                            var num = params.dataIndex;
                            var size = data.length;
                            if (num < size / 5) {
                                return color1[0];
                            } else if (num < size / 5 * 2) {
                                return color1[1];
                            } else if (num < size / 5 * 3) {
                                return color1[2];
                            } else if (num < size / 5 * 4) {
                                return color1[3];
                            } else {
                                return color1[4];
                            }
                        },
                        symbolSize: 8,
                        shadowBlur: 10,
                        symbol: 'arrow'
                    },
                    label: {
                        normal: {
                            show: true,
                            position: 'right',
                            formatter: '{b}'
                        }
                    },
                    symbol: ['none', 'arrow'],
                    symbolSize: 4,
                    lineStyle: {
                        normal: {
                            color: function (params) {
                                var num = params.dataIndex;
                                var size = data.length;
                                if (num < size / 5) {
                                    return color1[0];
                                } else if (num < size / 5 * 2) {
                                    return color1[1];
                                } else if (num < size / 5 * 3) {
                                    return color1[2];
                                } else if (num < size / 5 * 4) {
                                    return color1[3];
                                } else {
                                    return color1[4];
                                }
                            },
                            width: 1,
                            curveness: 0.2
                        },
                        emphasis: {
                            width: 4
                        }
                    },
                    data: convertData(data)
                },
                {
                    name: '',
                    type: 'effectScatter',
                    coordinateSystem: 'geo',
                    zlevel: 2,
                    rippleEffect: {
                        brushType: 'stroke'
                    },
                    label: {
                        normal: {
                            show: true,
                            position: 'right',
                            formatter: function (obj) {
                                return (obj.data.rc | '0')
                            }
                        }
                    },
                    symbolSize: function (val, param) {
                        return 10 + param.data.rc / 2000;
                    },
                    itemStyle: {
                        normal: {
                            color: function (params) {
                                var num = params.dataIndex;
                                var size = data.length;
                                if (num < size / 5) {
                                    return color1[0];
                                } else if (num < size / 5 * 2) {
                                    return color1[1];
                                } else if (num < size / 5 * 3) {
                                    return color1[2];
                                } else if (num < size / 5 * 4) {
                                    return color1[3];
                                } else {
                                    return color1[4];
                                }
                            }
                        }
                    },
                    data: data.map(function (data) {
                        return {
                            name: data.name,
                            value: getCoords(data.code).properties.center,
                            rc: data.rc,
                            tooltip: {
                                formatter: function (obj) {
                                    return obj.data.name + ' ' + (obj.data.rc | '') + '人'
                                }
                            }
                        };
                    })
                });
            series[1].data.push({
                name: baseMap.name,
                value: baseMap.coordinate
            })
            option = {
                title: {
                    text: '患者来源分布',
                    subtext: currentTitle,
                    left: 'center',
                    textStyle: {
                        color: '#fff'
                    }
                },
                tooltip: {
                    trigger: 'item'
                },
                legend: {
                    orient: 'vertical',
                    top: 'bottom',
                    left: 'right',
                    data: [],
                    // textStyle: {
                    //     color: '#fff'
                    // },
                    selectedMode: 'single'
                },
                geo: {
                    map: areaCode,
                    roam: 'move', // 是否开启鼠标缩放和平移漫游。默认不开启。如果只想要开启缩放或者平移，可以设置成 'scale' 或者 'move'。设置成 true 为都开启
                    aspectScale: 0.75,
                    zoom: 1.20,
                    label: {
                        normal: {
                            show: false,
                            textStyle: {
                                color: '#00a0c9'
                            }
                        },
                        emphasis: { // 对应的鼠标悬浮效果
                            show: true,
                            textStyle: {
                                color: "#00a0c9"
                            }
                        }
                    },
                    itemStyle: {
                        normal: {
                            areaColor: '#1b1b1b',
                            borderColor: 'rgba(30,144,255,0.5)'
                        },
                        emphasis: {
                            borderWidth: 0,
                            borderColor: '#1B1B1B',
                            areaColor: "#DC927B",
                            shadowColor: 'rgba(0, 0, 0, 0.5)'
                        }
                    }
                },
                series: series
            };
            myChart.setOption(option, true);
        }


    });
</script>

</body>
</html>
